var mysql = require('mysql')
var dbConfig = require('./db.config')

module.exports = {
  /**
   * 封装mysql 每次使用的时候需要创建链接，数据操作完成之后要关闭连接
   * @param {String} sql 查询语句
   * @param {Array} params 请求参数
   * @param {Function} callback 回调函数
   */
  query: function (sql, params, callback) {
    // 1. 创建连接对象
    var connection = mysql.createConnection(dbConfig)
    // 2. 开启连接
    connection.connect(function (err) {
      if (err) {
        console.log('数据库链接失败')
        throw err
      }
      //3. 开始数据操作
      connection.query(sql, params, function (err, results, fields = {}) {
        if (err) {
          console.log('数据操作失败')
          throw err
        }
        //将查询出来的数据返回给回调函数，这个时候就没有必要使用错误前置的思想了，因为我们在这个文件中已经对错误进行了处理，如果数据检索报错，直接就会阻塞到这个文件中
        // callback && callback(JSON.parse(JSON.stringify(results)), JSON.parse(JSON.stringify(fields)))
        callback && callback(results, fields)
        //4. 停止链接数据库，必须再查询语句后，要不然一调用这个方法，就直接停止链接，数据操作就会失败
        connection.end(function (err) {
          if (err) {
            console.log('关闭数据库连接失败！')
            throw err
          }
        })
      })
    })
  }
}